package dao;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import to.PessoaAtendimento;
import to.Protocolo_Telefonico;
import util.HibernateUtil;

public class AtendimentoDAO {

	public List<PessoaAtendimento> buscarTodasPessoas() {

		List<PessoaAtendimento> listaRetorno = new ArrayList<PessoaAtendimento>();
		Session session = null;

		try {

			session = HibernateUtil.getSessionFactory().openSession();
			Criteria criteria = session.createCriteria(PessoaAtendimento.class,
					"pa");
			criteria.addOrder(Order.asc("pa.nome"));
			listaRetorno = (List<PessoaAtendimento>) criteria.list();

		} catch (Exception e) {
			e.printStackTrace();
		}

		return listaRetorno;
	}

	public List<PessoaAtendimento> buscarPessoaPorNome(String nome) {

		List<PessoaAtendimento> listaRetorno = new ArrayList<PessoaAtendimento>();
		Session session = null;

		try {

			session = HibernateUtil.getSessionFactory().openSession();
			Criteria criteria = session.createCriteria(PessoaAtendimento.class,
					"pa");
			criteria.add(Restrictions
					.ilike("pa.nome", nome, MatchMode.ANYWHERE));
			criteria.addOrder(Order.asc("nome"));
			listaRetorno = (List<PessoaAtendimento>) criteria.list();

		} catch (Exception e) {
			e.printStackTrace();
		}

		return listaRetorno;
	}

	public List<Protocolo_Telefonico> buscarProtocoloPorPessoa(
			PessoaAtendimento p) {

		List<Protocolo_Telefonico> listaRetorno = new ArrayList<Protocolo_Telefonico>();
		Session session = null;

		try {

			session = HibernateUtil.getSessionFactory().openSession();
			Criteria criteria = session.createCriteria(
					Protocolo_Telefonico.class, "pro");
			criteria.add(Restrictions.eq("pro.pessoaAtendida", p));
			listaRetorno = (List<Protocolo_Telefonico>) criteria.list();

		} catch (Exception e) {
			e.printStackTrace();
		}

		return listaRetorno;
	}

	public Protocolo_Telefonico buscaProtocoloPorCodigo(Integer cod) {

		Protocolo_Telefonico p = new Protocolo_Telefonico();
		Session session = null;

		try {
			session = HibernateUtil.getSessionFactory().openSession();
			Criteria criteria = session.createCriteria(
					Protocolo_Telefonico.class, "pro");
			criteria.add(Restrictions.eq("pro.codProtocolo", cod));
			p = (Protocolo_Telefonico) criteria.uniqueResult();

		} catch (Exception e) {
			e.printStackTrace();
		}

		return p;
	}

}
